//数据字典相关全局通用方法和数据
const state = {
  //数据字典数据
  dict: new Array()
}

//mutations是Vuex中唯一允许更新应用状态的函数，是同步函数
const mutations = {
  /**
   * 设置字典
   * @param state
   * @param key
   * @param value
   * @constructor
   */
  SET_DICT: (state, { key, value }) => {
    if (key !== null && key !== "") {
      state.dict.push({
        key: key,
        value: value
      })
    }
  },
  /**
   * 删除字典
   * @param state
   * @param key
   * @returns {boolean}
   * @constructor
   */
  REMOVE_DICT: (state, key) => {
    try {
      for (let i = 0; i < state.dict.length; i++) {
        if (state.dict[i].key == key) {
          state.dict.splice(i, i)
          return true
        }
      }
    } catch (e) {
    }
  },
  /**
   * 清空字典
   * @param state
   * @constructor
   */
  CLEAN_DICT: (state) => {
    state.dict = new Array()
  }
}

//actions是Vuex中处理异步操作的函数，它们不能直接修改状态，而是通过调用 mutations 来间接修改状态
const actions = {
  /**
   * 设置字典
   * @param commit
   * @param data
   */
  setDict({ commit }, data) {
    commit('SET_DICT', data)
  },
  /**
   * 删除字典
   * @param commit
   * @param key
   */
  removeDict({ commit }, key) {
    commit('REMOVE_DICT', key)
  },
  /**
   * 清空字典
   * @param commit
   */
  cleanDict({ commit }) {
    commit('CLEAN_DICT')
  }
}

export default {
  // 必须加模块名前缀
  namespaced: true,
  state,
  mutations,
  actions
}

